import $axios from 'axios'
import { ref } from 'vue'
const baseUrl = window.REQUEST_URL
/**
 * 选单位弹框用到
 */
export const districtList = [
    {title: '市辖区',value: '330800'},
    {title: '柯城区',value: '330802'},
    {title: '衢江区',value: '330803'},
    {title: '常山县',value: '330822'},
    {title: '开化县',value: '330824'},
    {title: '龙游县',value: '330825'},
    {title: '江山市',value: '330881'},
    {title: '智造新城',value: '330851'},
]
/**
 * 左侧菜单列表
 */
export const menuList = [
    {
        id: 'function',
        name: '功能节点',
        ico: 'CaretRight',
        open: true,
        children: [
            {
                id: 'start',//这个字段用于给节点命名使用,没有其他作用
                name: '开始节点',//这个字段会保存到数据库里,作为节点的类型
                ico: 'CaretRight',//左边的图标,使用elemntplus
            }, {
                id: 'end',
                name: '结束节点',
                ico: 'Clock',
            }, {
                id: 'logicor',
                name: '逻辑或节点',
                ico: 'CopyDocument',
            }, {
                id: 'logicand',
                name: '逻辑与节点',
                ico: 'DocumentCopy'
            }
        ]
    },
    {
        id: '2',
        name: '业务节点',
        ico: 'business',
        open: true,
        children: [
            {
                id: 'handle',
                name: '处置节点',
                ico: 'User',
            }
        ]
    }
]

/**
 * 获取指定进程ID的配置信息
 * 
 * @param {String} processId - 进程ID
 * @returns {Promise} 返回一个包含配置信息的Promise对象
 */
export const getConfigByProcessId = async(processId) => {
    return $axios({
        url: baseUrl+"/handleprocess/getConfigByProcessId?processId=" + processId,
        method: "get",
    }).then(res => {
        return res.data.data
    })
}


/**
 * 保存配置
 * @param {Object} config - 配置对象
 * @returns {Promise} - 异步返回结果
 */
export const saveConfig = async(config) => {
  if (config.nodeList.filter(item => item.type == '开始节点').length !== 1) {
    return { code: 500, msg: "流程配置错误,请检查是否有一个开始节点" }
  }
  if (config.nodeList.filter(item => item.type == '结束节点').length !== 1) {
    return { code: 500, msg: "流程配置错误,请检查是否有一个结束节点" }
  }
  let handleNodeList = config.nodeList.filter(item => item.type == '处置节点')
  for (const node of handleNodeList) {
    debugger
    if (!node.businesstype) {
      return { code: 500, msg: "流程配置错误," + node.name + "没有选择业务类型" }
    }
  }
  return $axios({
    url: baseUrl+'/handleprocess/SaveOrUpdateProcess',
    method: "POST",
    data: config
  }).then(res => {
    if (res.data.data && res.data.code == "200") {
      return { code: 200, msg: "保存成功" }
    } else {
      return { code: 500, msg: res.data?.message || "保存失败!" }
    }
  })
}
/**
 * 获取角色列表
 * @returns {Promise<{title: string, value: string}[]}> - 角色列表对象数组
 */
export const getRoleList = async () => {
    // 请求接口获取角色列表数据
    return $axios({
        url: baseUrl + "/role/GetRolePermission",
        method: "GET",
    }).then(res => {
        // 判断返回结果是否合法
        if (res.data.data && res.data.code == "200") {
            // 将返回结果映射为对象数组并返回
            return res.data.data.map(item => {
                return {
                    title: item.rolename,
                    value: item.rolekey
                }
            })
        }
    })
}
/**
 * 获取组织列表
 * @param {number} pagenum - 页码
 * @param {number} pagesize - 每页数量
 * @param {object} queryInfo - 查询参数
 * @returns {Promise} 返回一个Promise对象，包含查询成功标志、总记录数和组织列表
 */
export const getOrgListFunction = async(pagenum,pagesize,queryInfo)=>{
    let params = {...queryInfo,pageIndex:pagenum,pageSize:pagesize}
    return $axios({
        url:baseUrl+"/organization/GetOrganizationList",
        method:"GET",
        params:params
    }).then(res=>{
        if (res.data.data && res.data.code == "200") {
            const querysuccess = true;
            const totalcount = res.data.total;
            const datalist = res.data.data.map(item=>{
                return {
                    id:item.id,
                    name:item.name,
                    fathername:item.fathername,
                    type:item.type,
                    districtname:item.districtname,
                }
            })
            return ({querysuccess,totalcount,datalist})
        }else{
            const querysuccess = false;
            const totalcount = 0;
            const datalist = [];
            return ({querysuccess,totalcount,datalist})
        }
    })
}

/**
 * 获取人员列表
 * @param {number} pagenum - 页码
 * @param {number} pagesize - 每页数量
 * @param {object} queryInfo - 查询参数
 * @returns {Promise} 返回一个Promise对象，包含查询成功标志、总记录数和人员列表
 */
export const getPerListFunction = async(pagenum,pagesize,queryInfo)=>{//[*]数据查询方法,每次改动条件重新查询或者改动页码都会重新执行该方法,并渲染
    let params = {...queryInfo,pageIndex:pagenum,pageSize:pagesize}
    params.currentorgid="330800"
    params.currentorgtype="3"
    return $axios({
        url:baseUrl+"/person/GetPersonList",
        method:"GET",
        params:params
    }).then(res=>{
        if (res.data.data && res.data.code == "200") {
            const querysuccess = true;
            const totalcount = res.data.total;
            const datalist = res.data.data.map(item=>{
                return {
                    id:item.id,
                    name:item.name,
                    phone:item.phone,
                    orgname:item.orgname,
                }
            });
            return ({querysuccess,totalcount,datalist})
        }else{
            const querysuccess = false;
            const totalcount = 0;
            const datalist = [];
            return ({querysuccess,totalcount,datalist})
        }
    })
}
// let dataB = {
//     id: 'flowA',
//     name: '流程A',
//     processno: '123456',
//     description:'一段流程描述',
//     type:'处置流程',
//     nodeList: [
//         {
//             id: 'nodeA',
//             name: '节点A-不可拖拽',
//             type: 'task',
//             left: '18px',
//             top: '223px',
//             ico: 'CaretRight',
//             state: 'success',
//             businesstype:'role',
//             orginfo:[],
//             perinfo:[],
//             roleid:'eventcenter_disposer',
//             rolename:'报警处置人',
//             needsendmsg:'1'

//         },
//         {
//             id: 'nodeB',
//             type: 'task',
//             name: '流程B-节点B',
//             left: '351px',
//             top: '96px',
//             ico: 'CaretRight',
//             state: 'error'
//         },
//         {
//             id: 'nodeC',
//             name: '流程B-节点C',
//             type: 'task',
//             left: '354px',
//             top: '351px',
//             ico: 'CaretRight',
//             state: 'warning'
//         }, {
//             id: 'nodeD',
//             name: '流程B-节点D',
//             type: 'task',
//             left: '723px',
//             top: '215px',
//             ico: 'CaretRight',
//             state: 'running'
//         }
//     ],
//     lineList: [{
//         from: 'nodeA',
//         to: 'nodeB',
//         label: '条件A',
//     }, {
//         from: 'nodeA',
//         to: 'nodeC',
//         label: '条件B'
//     }, {
//         from: 'nodeB',
//         to: 'nodeD'
//     }, {
//         from: 'nodeC',
//         to: 'nodeD'
//     }
//     ]
// }
